package com.polaris.live.im.sfs

import androidx.annotation.IntDef

/**
 * 半仙
 *
 * @description: SmartFox相关常量
 */

//系统用户的id
const val SYSTEM_USER_ID = 0L

internal const val REQUEST_HEARTBEAT = "heartbeat"

//=====各种消息的命令   ==============extensionResponse==================下发的
const val COMMAND_SINGLE_MESSAGE = "singleMessage"          //私聊消息
const val COMMAND_BATCH_COMMAND = "unreadSingleMessage"     //批量消息，登录后收到的所有离线消息
const val COMMAND_BATCH_COMMAND_ACK = "ack"                 //批量消息回执，用于收到批量消息处理完毕后给服务器的回执
const val COMMAND_SUCCESS = "success"                       //消息发送成功回执
const val COMMAND_ERROR = "error"                           //消息发送失败回执

//  ==============moderatorMessage==================下发的
const val COMMAND_KICK_USER = "kickUser" //踢用户下线

//  ==============adminMessage==================下发的
const val COMMAND_BATCH_MESSAGE = "batchMessage"                //批量系统消息
const val COMMAND_SYSTEM_MESSAGE = "systemMessage"              //系统消息
const val COMMAND_STRANGER_MESSAGE = "strangerMessage"          //本地的陌生人打招呼消息
const val COMMAND_STATE_CHANGE = "noticeStateChange"            //用户状态变更
const val COMMAND_STATE_USER_CHANGE = "noticeUserInfoChange"    //用户状态通知
const val COMMAND_ACCOUNT_CHANGE = "noticeAccountChange"        //用户账号变更
const val COMMAND_INVITE_MATCH = "noticeInviteMatch"            //新人视频邀约
const val COMMAND_GAME_ACCOUNT_CHANGE = "noticeGameAccountChange"//用户游戏币余额变动
const val COMMAND_NOTICE_LEVEL_ACCOUNT_CHANGE = "noticeLevelAccountChange" //用户豪魅等级变化

//  ==============通话发送消息====================
const val COMMAND_CALL_PUBLIC_SCREEN = "callPublicScreen"   //通话公屏消息

//  ==============通话消息=======================
const val COMMAND_CALL_START = "callStart"                  //通话开始
const val COMMAND_CALL_START_WAIT = "callStartWait"         //通话开始之《拉起等待》
const val COMMAND_CALL_ANSWER = "callAnswer"                //通话之《你打给对方,对方接听了  通话应答》
const val COMMAND_CALL_CANCEL = "callCancel"                //通话之《对方给你挂断了   通话取消》
const val COMMAND_CALL_NO_ANSWER = "callNoAnswer"           //通话之《对方没屌你  通话未应答》
const val COMMAND_CALL_REFUSE = "callRefuse"                //通话之《你打给对方，对方拒绝了  通话拒绝》
const val COMMAND_CALL_END = "callEnd"                      //通话之《over》
const val COMMAND_LIVE_MESSAGE = "liveMessage"              //通话中消息

//  ==============通知消息=======================
const val COMMAND_NOTICE_POPUP_WINDOW = "noticePopupWindow"         //弹窗通知
const val COMMAND_NOTICE_EVENT = "noticeTrackEvent"                 //事件上报通知
const val COMMAND_LEVEL_UP_MESSAGE = "noticeRichCharmLevelUpgrade"  //壕魅等级升级通知
const val COMMAND_NOTICE_TASK_COMPLETE = "noticeTaskComplete"       //任务完成弹窗
const val COMMAND_NOTICE_POPUP = "noticePopup"                      //获得奖励通知
const val COMMAND_NOTICE_LUCKY_BAG = "noticeLuckyBag"               //福袋消息

//  ==============直播消息=======================
const val COMMAND_LIVE_PUBLIC_SCREEN = "livePublicScreen"    //直播公屏消息

//  ==============直播消息====================
const val COMMAND_LIVE_START = "liveStart"                   //发送开启直播消息
const val COMMAND_LIVE_JOIN = "liveJoin"                     //发送加入直播间
const val COMMAND_LIVE_STOP = "liveStop"                     //发送结束直播
const val COMMAND_LIVE_RECOVER = "liveRecover"               //发送恢复直播间
const val COMMAND_LIVE_QUIT = "liveQuit"                     //离开直播间

const val COMMAND_LIVE_CLOSE = "liveClose"                   //直播结束消息
const val COMMAND_LIVE_NOTICE = "liveNotice"                 //直播通知消息
const val COMMAND_LIVE_FLOATING = "liveFloating"             //直播飘屏消息

//=====SFS Arguments的命令
const val ARGUMENTS_CLIENT_TYPE = "clientType"
const val ARGUMENTS_EVENT_TYPE = "eventType"

const val ARGUMENTS_CMD = "cmd"
const val ARGUMENTS_MESSAGE = "message"

const val ARGUMENTS_PARAMS = "params"
const val ARGUMENTS_DATA = "data"

const val ARGUMENTS_SUCCESS = "success"
const val ARGUMENTS_REASON = "reason"
const val ARGUMENTS_ROOM = "room"
const val ARGUMENTS_USER = "user"
const val ARGUMENTS_SENDER = "sender"
const val ARGUMENTS_CHANGEDVARS = "changedVars"

//  ==============语聊房====================

const val PARTY_LIVESITEUP = "liveSiteUp"                   //语聊房上麦
const val PARTY_LIVESITEDOWN = "liveSiteDown"               //语聊房下麦
const val PARTY_LIVESITELOCK = "liveSiteLock"               //语聊房麦位上锁开锁
const val PARTY_LIVESITEMICBAN = "liveSiteMicBan"           //语聊房麦位开关禁麦
const val PARTY_LIVESITEVIDEOSWITCH = "liveSiteVideoSwitch" //开关视频
const val PARTY_LIVESITEVIDEOBAN = "liveSiteVideoBan"       //禁视频
const val PARTY_LIVESITEKICK = "liveSiteKick"               //提下麦位
const val PARTY_LIVEKICKUSER = "liveKickUser"               //踢出房间
const val PARTY_LIVESITEMICSWITCH = "liveSiteMicSwitch"     //开关麦
const val PARTY_GAME_LIVESITEUP = "liveGameSiteUp"          //游戏位上
const val PARTY_GAME_LIVESITEDOWN = "liveGameSiteDown"      //游戏位下

//=====各种消息类型
const val TYPE_MESSAGE_TEXT: Long = 1L shl 1                //文字
const val TYPE_MESSAGE_IMAGE: Long = 1L shl 2               //图片
const val TYPE_MESSAGE_GIFT: Long = 1L shl 3                //礼物
const val TYPE_MESSAGE_NOTICE: Long = 1L shl 10             //公告，服务端通知
const val TYPE_MESSAGE_CALL: Long = 1L shl 30               //通话
const val TYPE_MESSAGE_SYSTEM: Long = 1L shl 63             //系统消息【文字带连接等处理】
const val TYPE_MESSAGE_INVITATION_ROOM: Long = 1L shl 20    //邀请进房

//=====消息发送的状态
const val MESSAGE_STATUS_SUCCESS: Int = 0               //消息发送成功
const val MESSAGE_STATUS_ERROR: Int = 1                 //消息发送失败
const val MESSAGE_STATUS_TIMEOUT: Int = 2               //消息发送超时
const val MESSAGE_STATUS_SENDING: Int = 3               //消息发送中

//==========游戏发送状态
const val GAME_NOTICE_PARTY_GAMESETTLEMENT = "noticePartyGameSettlement"//客户端收到此消息可以展示结算结果并在延迟后直接关闭房间

@IntDef(
    MESSAGE_STATUS_SUCCESS,
    MESSAGE_STATUS_ERROR,
    MESSAGE_STATUS_TIMEOUT,
    MESSAGE_STATUS_SENDING
)
annotation class SendStatus

//=====直播和通话消息区分
const val TYPE_CALL_MESSAGE = 1
const val TYPE_LIVE_MESSAGE = 2

//=====通话消息类型
const val LIVE_PUBLIC_SCREEN = 1          //公屏消息
const val LIVE_PROMPT = 2                 //提示消息
const val LIVE_SEND_GIFT = 3              //礼物消息
const val LIVE_INVITE_FOLLOW = 4          //邀请关注消息
const val LIVE_INVITE_GIFT = 5            //邀请送礼
const val LIVE_GIFT_LIST = 6              //礼物列表消息

//const val LIVE_SIMULTANEOUS_SWITCH = 7    //通话同声传译开关
const val LIVE_INVITE_CALL = 8              //邀请通话
const val LIVE_RECHARGE_PAY = 9             //拉起充值页面
const val LIVE_OCCLUSION_MESSAGE = 10       //遮挡屏幕消息
const val LIVE_NOTICE_MESSAGE = 11          //通知消息
const val LIVE_TOAST_MESSAGE = 12           //toast消息提示
const val LIVE_WARN_MESSAGE = 13            //警告消息
const val LIVE_MASKING_MESSAGE = 14         //遮罩消息
const val LIVE_TRANSLATION_MESSAGE = 15     //同声传译开始消息
const val LIVE_UPLOAD_FACE = 16             //上传人脸消息
const val LIVE_NEW_FOLLOWER = 17            //用户提示消息 （关注）
const val LIVE_NEW_ANCHOR = 20              //新主播补贴消息
const val LIVE_INVITE_SITE = 21             //邀请上座信息
const val LIVE_KICK_ROOM = 22               //提出房間
const val LIVE_UP_SEAT_INVITE = 23          //欢迎语邀请
const val LIVE_PARTY_EMOJI = 24             //表情消息
const val LIVE_CHANGED_GAME_REWARD = 25     //游戏价格修改
const val LIVE_RELOAD_GAME = 26             //重新加载游戏
const val CALL_GAME_STATUS = 27             //.通话游戏状态
const val CALL_GAME_ANSWER = 28             //通话游戏开始
const val CALL_OTHER_CAMERA = 30            //对方控制了摄像头
const val CALL_LOAD_GAME = 31               //游戏加载消息
const val CALL_REFUSE_INTERPRETATION = 33   //拒绝同声传译
const val REQUEST_GIFT_POPUP_MESSAGE = 37   //索要礼物弹出消息
const val BIG_BROTHER_ENTERS_ROOM = 38      //大哥进场
const val LUCKY_BACKPACK_GIFT = 39          //背包幸运礼物
const val LIVE_RECOMMEND_CARD = 40          //使用推荐卡片
const val LIVE_MAGIC_LAMP_90 = 41           //神灯进度90%
const val LIVE_MAGIC_LAMP_OPEN = 42         //神灯开奖
const val NEW_COUPLES_FREE_GIFTS = 43       //新人免费礼物累计

//=====直播时的liveNotice的type 类型
const val NOTICE_TYPE_TEXT = 1L           //直播通知消息 文本
const val NOTICE_TYPE_IMAGE = 2L          //直播通知消息 图片
const val NOTICE_TYPE_TEXT_IMAGE = 3L     //直播通知消息 文本加图片
const val NOTICE_TYPE_LIST = 10L          //直播通知消息 列表

const val NOTICE_IMAGE_TYPE_STATIC = 1    //通知消息图片类型    静态
const val NOTICE_IMAGE_TYPE_DYNAMIC = 2   //通知消息图片类型    动态

const val MESSAGE_GREET_0 = 0             //审核中
const val MESSAGE_GREET_1 = 1             //审核通过
const val MESSAGE_GREET_2 = 2             //审核失败
const val MESSAGE_GREET_3 = 3             //上传模板
const val LIVE_NOT_HAVE = -1              //用户版本不同的 老版本没有该类型就展示没有

//系统打招呼的标识
const val EXT_FLAG_GREET_PUSH_MESSAGE = "flagGreetPushMessage"
const val EXT_FLAG_PUSH_MESSAGE = "10086"  //客户端用的，当flagGreetPushMessage等于这个的时候表示已读






